package net.similarsu.device.sdk.dah.struct;

import com.sun.jna.Pointer;
import com.sun.jna.Structure;

import static net.similarsu.device.sdk.dah.library.DahLibrary.*;

@Structure.FieldOrder({
        "nChannelID"
        , "nEventAction"
        , "dbPTS"
        , "szName"
        , "stuUTC"
        , "nEventID"
        , "bCompareResult"
        , "nSimilarity"
        , "nThreshold"
        , "emSex"
        , "nEthnicity"
        , "szCitizen"
        , "szAddress"
        , "szNumber"
        , "szAuthority"
        , "stuBirth"
        , "stuValidityStart"
        , "bLongTimeValidFlag"
        , "stuValidityEnd"
        , "stuImageInfo"
        , "szCardNo"
        , "szCellPhone"
        , "stuExtensionInfo"
        , "stuImageInfoEx"
        , "byReserved"
})
public class DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO extends Structure {
    //公共字段
    public int nChannelID;                         // 通道号,从0开始
    public int nEventAction;                        // 事件动作, 0表示脉冲, -1表示未知
    public double dbPTS;                              // 时间戳(单位是毫秒)
    public byte[] szName = new byte[DH_EVENT_NAME_LEN];          // 事件名称
    public NET_TIME_EX stuUTC;                             // 事件发生的时间
    public int nEventID;                           // 事件ID

    //事件对应字段
    public byte bCompareResult;                     // 人证比对结果,相似度大于等于阈值认为比对成功,true表示成功,false表示失败
    public byte nSimilarity;                        // 两张图片的相似度,单位百分比,范围[1,100]
    public byte nThreshold;                         // 检测阈值,范围[1,100]
    public int emSex;                        // 性别
    public int nEthnicity;                         // 民族(参照DEV_EVENT_ALARM_CITIZENIDCARD_INFO的nEthnicity定义)
    public byte[] szCitizen = new byte[DH_COMMON_STRING_64];     // 居民姓名
    public byte[] szAddress = new byte[DH_COMMON_STRING_256];    // 住址
    public byte[] szNumber = new byte[DH_COMMON_STRING_64];      // 身份证号
    public byte[] szAuthority = new byte[DH_COMMON_STRING_256];  // 签发机关
    public NET_TIME stuBirth;                           // 出生日期(年月日)
    public NET_TIME stuValidityStart;                   // 有效期限起始日期(年月日)
    public int bLongTimeValidFlag;                 // 该值为 TRUE, 截止日期 表示长期有效,此时 stuValidityEnd 值无意义
    // 该值为 FALSE, 此时 截止日期 查看 stuValidityEnd 值
    public NET_TIME stuValidityEnd;                     // 有效期限结束日期(年月日)
    public CITIZEN_PICTURE_COMPARE_IMAGE_INFO[] stuImageInfo = new CITIZEN_PICTURE_COMPARE_IMAGE_INFO[2];     // 图片信息，第一张为拍摄照片，第二张为身份证照片
    public byte[] szCardNo = new byte[DH_COMMON_STRING_32];      // IC卡号
    public byte[] szCellPhone = new byte[DH_COMMON_STRING_20];   // 手机号（比对时先输入手机号）
    public NET_EXTENSION_INFO stuExtensionInfo;                   // 扩展信息
    public CITIZEN_PICTURE_COMPARE_IMAGE_INFO_EX[] stuImageInfoEx = new CITIZEN_PICTURE_COMPARE_IMAGE_INFO_EX[6];    // 图片扩展信息
    public byte[] byReserved = new byte[360];                    // 保留字节

    public DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO() {
        super();
    }

    public DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO(Pointer pointer) {
        super(pointer);
    }

    public static class ByReference extends DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO implements Structure.ByReference {
    }

    public static class ByValue extends DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO implements Structure.ByValue {
    }
}
